export const scrollToSection = (anchor) => {
  document.querySelector(anchor).scrollIntoView({
    behavior: 'smooth',
    // 定义动画过渡效果， "auto"或 "smooth" 之一。默认为 "auto"
    block: 'center',
    // 定义垂直方向的对齐， "start", "center", "end", 或 "nearest"之一。默认为 "start"
    inline: 'nearest',
    // 定义水平方向的对齐， "start", "center", "end", 或 "nearest"之一。默认为 "nearest"
  });
};


// 文件下载 (相对路径)
export const downloadFile = (url, filename) => {
  const link = document.createElement('a');
  link.href = `${import.meta.env.VITE_APP_FILE_DOWNLOAD_API}/${url}`;
  link.download = filename;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

// 文件下载 (绝对路径)
export const downloadWebFile = (url, filename) => {
  const link = document.createElement('a');
  link.href = url
  link.download = filename;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}



//滚动到表单校验错误提示
export function scrollToFormError() {
  // 获取第一个校验错误的元素
  const element = document.querySelectorAll('.el-form-item__error')[0]
  // 滚动到错误元素对应位置
  element.scrollIntoView({
    behavior: 'smooth',
    block: 'center'
  })
}



// 防抖函数
export function debounce(func, wait, immediate) {
  console.log('防抖');
  let timeout; // 定义一个计时器变量，用于延迟执行函数
  return function (...args) { // 返回一个包装后的函数
    const context = this; // 保存函数执行上下文对象
    const later = function () { // 定义延迟执行的函数
      timeout = null; // 清空计时器变量
      if (!immediate) func.apply(context, args); // 若非立即执行，则调用待防抖函数
    };
    const callNow = immediate && !timeout; // 是否立即调用函数的条件
    clearTimeout(timeout); // 清空计时器
    timeout = setTimeout(later, wait); // 创建新的计时器，延迟执行函数
    if (callNow) func.apply(context, args); // 如果满足立即调用条件，则立即执行函数
  }
}